#ifndef _DEVICE_H_
#define _DEVICE_H_

#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"

// 前向声明，用户需要自定义这些结构体
typedef struct DeviceEvent DeviceEvent;
// typedef struct ReportType ReportType;
typedef struct SendReportType SendReportType;

// 设备模块接口
typedef struct {
    void (*Init)(void);
    void (*EventLoopTask)(void*);
    ReportType (*ProcessEventHookFunction)(DeviceEvent*);
    void (*UserControlFlowHookFunction)(ReportType*);
    void (*SendDataHook)(void*);
    void (*SetModuleState)(void);
    ReportType* (*GetModuleState)(void);
    SendReportType* (*GetSendReport)(void);
} DeviceModule;

// 事件队列和发送队列的类型定义
extern QueueHandle_t xModuleEventQueue;
extern QueueHandle_t xSendDataQueue;

// 设备模块实例化
extern DeviceModule device;

// 接口声明
// void Device_Init(void);
// void Device_EventLoopTask(void* arg);
// void Device_SendDataLoopTask(void* arg);
// void Device_SetModuleState(void);
// ReportType* Device_GetModuleState(void);

#endif // _DEVICE_H_